package write.basic;

public class DataEight {
    public static void main(String[] args) {
        //一个字节8bit
        //byte,字节型，1个字节，范围-128~127
        //整数直接量，可以直接赋值给byte，但计算时，系统会先转为int再计算，所以需要强转
        byte ba = (byte)1;
        byte bb = 2;
        byte bc = 1+2;
        byte bd = (byte)(ba+bb);

        //short,短整型，2个字节，范围-2^15~2^15-1
        //和byte类似
        short sa = (short)1;
        short sb = 2;
        short sc = 1+2;
        short sd = (short)(sa+sb);

        //int,整型，4个字节，范围-2^31~2^31-1
        //两个整数相除，得到的还是整数
        //直接赋值超出范围的数，直接报编译错误
        //计算结果超出范围，只会溢出，哪怕用直接量做运算，也不会报错
        int intMax = Integer.MAX_VALUE;
        int intMin = Integer.MIN_VALUE;
        int ia = 5;
        int ib = 2;
        System.out.println(ia/ib);
        //int ic = 100000000000000000;
        int id = 10000*10000*10000*10000;
        System.out.println(id);

        //long,长整型，8个字节，范围-2^63~2^63-1
        //运算可能发生溢出时，在第一个数字后加L，转换为long
        long la = 100000;
        long lb = 10000000000000000L;
        long lc = 10000L*10000*10000;
        System.out.println(lc);

        //float,单精度浮点型，4个字节
        //后面必须加f/F，不然编译错误
        //float fa = 10.22;
        float fb = 6.00f;
        float fc = 2.99F;
        System.out.println(fb-fc);

        //double,双精度浮点型，8个字节
        //运算时，可能发生舍入误差，精确场合不能用
        double da = 3.22;
        double db = 1.5;

        //boolean,布尔型，1个字节，取值范围true/false
        boolean flaga = true;
        boolean flagb = false;

        //char,字符型，2个字节，采用unicode编码格式，一个字符对应一个码，范围0~65535
        //0-48,A-65,a-97
        //char型数据参与运算时，系统一律将其转换为int再运算
        char ca = '你';
        char cb = '5';
        char cc = 'x';
        char cd = '\'';
        System.out.println('2'+'a');


        //数据类型由小到大依次为：byte<short<int<long<float<double
        //                          char<

    }
}













